package com.redepronik.negosys.invfac.service;

import java.util.List;

import org.springframework.transaction.annotation.Transactional;

import com.redepronik.negosys.invfac.entity.Detalleguiaremision;
import com.redepronik.negosys.invfac.entity.Egreso;
import com.redepronik.negosys.invfac.entity.Guiaremision;
import com.redepronik.negosys.rrhh.entity.Empleadocargo;
import com.redepronik.negosys.rrhh.entity.Persona;

public interface GuiaRemisionService {
	@Transactional
	public Long contar();

	@Transactional
	public void cargarCliente(List<Egreso> listaFacturasGuiaRemision,
			Persona cliente);

	@Transactional
	public void cargarDetalleGuiaRemision(Persona cliente,
			List<Egreso> listaFacturasGuiaRemision,
			List<Egreso> listaAuxFactura,
			List<Detalleguiaremision> listDetalleGuiaRemision);

	@Transactional
	public boolean comprobarGuiaRemision(Guiaremision guiaRemision,
			Empleadocargo transportista,
			List<Detalleguiaremision> listDetalleGuiaRemision);

	@Transactional
	public void insertar(Guiaremision guiaRemision, Persona cliente,
			Empleadocargo transportista,
			List<Detalleguiaremision> listDetalleGuiaRemision,
			List<Egreso> listaFacturasGuiaRemision);

	@Transactional
	public void insertar(Guiaremision guiaRemision, Egreso egreso,
			Persona cliente, Empleadocargo transportista);

	@Transactional
	public void quitarDetalleGuiaRemision(List<Egreso> listaAuxFactura,
			List<Egreso> listaFacturasGuiaRemision,
			List<Egreso> listaQuitarFacturasGuiaRemision,
			List<Detalleguiaremision> listDetalleGuiaRemision, Persona cliente);

	@Transactional
	public List<Guiaremision> obtener(String criterioBusquedaCliente,
			String criterioBusquedaCodigo);

	@Transactional
	public Guiaremision obtenerPorGuiaRemisionId(Long guiaRemisionId);

}